import { query as queryUsers, queryCurrent } from '../services/user';

export default {
    namespace: 'user',

    state: {
        list: [],
        currentUser: {},
    },

    effects: {
        * fetch(_, { call, put }) {
            const response = yield call(queryUsers, 1);
            yield put({
                type: 'save',
                payload: response.data,
            });
        },
        * fetchCurrent(_, { call, put }) {
            const response = yield call(queryCurrent, 1);
            yield put({
                type: 'saveCurrentUser',
                payload: response.data,
            });
        },
    },

    reducers: {
        save(state, action) {
            return {
                ...state,
                list: action.payload,
            };
        },
        saveCurrentUser(state, action) {
            return {
                ...state,
                currentUser: action.payload,
            };
        },
        changeNotifyCount(state, action) {
            return {
                ...state,
                currentUser: {
                    ...state.currentUser,
                    notifyCount: action.payload,
                },
            };
        },
    },
};
